package com.ruoyi.project.file.gallery.service;

import java.util.List;

import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.file.detail.domain.FileDetail;
import com.ruoyi.project.file.gallery.domain.FileGallery;
import org.springframework.web.multipart.MultipartFile;

/**
 * 画廊记录Service接口
 *
 * @author zhangqidi
 * @date 2025-08-07
 */
public interface IFileGalleryService
{
    /**
     * 查询画廊记录
     *
     * @param id 画廊记录主键
     * @return 画廊记录
     */
    public FileGallery selectFileGalleryById(String id);

    /**
     * 查询画廊记录列表
     *
     * @param fileGallery 画廊记录
     * @return 画廊记录集合
     */
    public List<FileGallery> selectFileGalleryList(FileGallery fileGallery);

    /**
     * 新增画廊记录
     *
     * @param fileGallery 画廊记录
     * @return 结果
     */
    public int insertFileGallery(FileGallery fileGallery);

    /**
     * 修改画廊记录
     *
     * @param fileGallery 画廊记录
     * @return 结果
     */
    public int updateFileGallery(FileGallery fileGallery);

    /**
     * 批量删除画廊记录
     *
     * @param ids 需要删除的画廊记录主键集合
     * @return 结果
     */
    public int deleteFileGalleryByIds(String ids);

    /**
     * 删除画廊记录信息
     *
     * @param id 画廊记录主键
     * @return 结果
     */
    public int deleteFileGalleryById(String id);

    /**
     * 查询用户可见的画廊列表
     *
     * @param fileGallery 画廊信息
     * @return 画廊列表
     */
    public List<FileGallery> selectUserVisibleGalleryList(FileGallery fileGallery);

    /**
     * 查询画廊文件
     *
     * @param galleryId 画廊ID
     * @param galleryType 画廊类型
     * @return 文件列表
     */
    public List<FileDetail> selectGalleryFiles(String galleryId, Integer galleryType);

    /**
     * 查询画廊文件数量
     * @param galleryId 画廊ID
     * @param galleryType 画廊类型
     * @return 文件数量
     */
    public int countGalleryFiles(String galleryId, Integer galleryType);

    /**
     * 保存移动端画廊
     *
     * @param title 标题
     * @param recordDate 记录日期
     * @param shareType 分享类型
     * @param content 内容
     * @param isVideo 是否为视频
     * @param files 文件列表
     * @param currentUser 当前用户
     * @return 结果
     */
    AjaxResult saveMobileGallery(String title, String recordDate, String shareType, String content,
                                 Boolean isVideo, MultipartFile[] files, String currentUser);


    /**
     * 更新移动端画廊
     *
     * @param id 画廊ID
     * @param title 标题
     * @param recordDate 记录日期
     * @param shareType 分享类型
     * @param content 内容
     * @param isVideo 是否为视频
     * @param files 新增文件
     * @param deletedFileIds 删除的文件IDs
     * @param fullSortedOrder 完整排序信息
     * @param currentUser 当前用户
     * @return 结果
     */
    AjaxResult updateMobileGallery(String id, String title, String recordDate, String shareType,
                                   String content, Boolean isVideo, MultipartFile[] files,
                                   String deletedFileIds, String fullSortedOrder, String currentUser);


    /**
     * 删除移动端画廊
     *
     * @param galleryId 画廊ID
     * @param currentUser 当前用户
     * @return 结果
     */
    AjaxResult deleteMobileGallery(String galleryId, String currentUser);

}
